<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>ch03-classification</title>

<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.6 (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
ul#tabs {
  margin-bottom: 4px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
@-moz-document url-prefix() {
  div.inner_cell {
    overflow-x: hidden;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 20ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}

@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="MNIST:-the-&quot;Hello-World&quot;-of-Machine-Learning">MNIST: the "Hello World" of Machine Learning<a class="anchor-link" href="#MNIST:-the-&quot;Hello-World&quot;-of-Machine-Learning">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[1]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Alternative local file loader (due to mldata.org being down)</span>

<span class="kn">from</span> <span class="nn">scipy.io</span> <span class="k">import</span> <span class="n">loadmat</span>
<span class="n">mnist_raw</span> <span class="o">=</span> <span class="n">loadmat</span><span class="p">(</span><span class="s2">&quot;mnist-original.mat&quot;</span><span class="p">)</span>
<span class="n">mnist</span> <span class="o">=</span> <span class="p">{</span>
    <span class="s2">&quot;data&quot;</span><span class="p">:</span> <span class="n">mnist_raw</span><span class="p">[</span><span class="s2">&quot;data&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">T</span><span class="p">,</span>
    <span class="s2">&quot;target&quot;</span><span class="p">:</span> <span class="n">mnist_raw</span><span class="p">[</span><span class="s2">&quot;label&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
    <span class="s2">&quot;COL_NAMES&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;label&quot;</span><span class="p">,</span> <span class="s2">&quot;data&quot;</span><span class="p">],</span>
    <span class="s2">&quot;DESCR&quot;</span><span class="p">:</span> <span class="s2">&quot;mldata.org dataset: mnist-original&quot;</span><span class="p">,</span>
    <span class="p">}</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 70K images, 28x28 pixels/image, each pixel = 0 (white) to 255 (black)</span>
<span class="n">mnist</span> <span class="c1"># a dict object</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt output_prompt">Out[2]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>{&#39;COL_NAMES&#39;: [&#39;label&#39;, &#39;data&#39;],
 &#39;DESCR&#39;: &#39;mldata.org dataset: mnist-original&#39;,
 &#39;data&#39;: array([[0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0],
        ..., 
        [0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0],
        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8),
 &#39;target&#39;: array([ 0.,  0.,  0., ...,  9.,  9.,  9.])}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># take a peek</span>
<span class="n">X</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="n">mnist</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">],</span> <span class="n">mnist</span><span class="p">[</span><span class="s1">&#39;target&#39;</span><span class="p">]</span>

<span class="n">X</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y</span><span class="o">.</span><span class="n">shape</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt output_prompt">Out[3]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>((70000, 784), (70000,))</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[4]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># display example image</span>

<span class="o">%</span><span class="k">matplotlib</span> inline
<span class="kn">import</span> <span class="nn">matplotlib</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>

<span class="n">some_digit</span> <span class="o">=</span> <span class="n">X</span><span class="p">[</span><span class="mi">36000</span><span class="p">]</span>
<span class="n">some_digit_image</span> <span class="o">=</span> <span class="n">some_digit</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span>
    <span class="n">some_digit_image</span><span class="p">,</span> 
    <span class="n">cmap</span> <span class="o">=</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">binary</span><span class="p">,</span>
    <span class="n">interpolation</span><span class="o">=</span><span class="s2">&quot;nearest&quot;</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
AAALEgAACxIB0t1+/AAABj5JREFUeJzt3a9rlf8fxvEzGQZZGLo0hA3BWQzivzHEpha1mRRhGkyW
FUG0WQXFpEFENC6IQWxD0xB/40A4gpyyoJ5P+ZZvuF/3PGdnc+d6POrlvfuAPrnD2/tsot/vd4A8
e3b6AwA7Q/wQSvwQSvwQSvwQSvwQSvwQSvwQSvwQanKb7+e/E8LoTWzmD3nyQyjxQyjxQyjxQyjx
QyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjx
QyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQyjxQ6jJnf4AMKiHDx+W+5s3
bxq3+/fvb/XH+T+fPn0a6c/fCp78EEr8EEr8EEr8EEr8EEr8EEr8EMo5PyPV6/Uat5cvX5bXLi8v
l/urV6/KfWJiotzTefJDKPFDKPFDKPFDKPFDKPFDKEd9Y+7Xr1/lvr6+PtTPbzuO+/DhQ+O2srIy
1L1HaWZmptzPnDmzTZ9kdDz5IZT4IZT4IZT4IZT4IZT4IZT4IZRz/jHXdo4/Pz9f7v1+v9z/5ddm
jx071ridPXu2vHZxcbHcDx8+PNBn+pd48kMo8UMo8UMo8UMo8UMo8UMo8UMo5/xj7urVq+Xedo7f
treZnZ1t3C5cuFBee/369aHuTc2TH0KJH0KJH0KJH0KJH0KJH0KJH0I55x8Dd+/ebdyeP39eXjvs
+/ht13e73cat7XcKrK2tlfvCwkK5U/Pkh1Dih1Dih1Dih1Dih1Dih1Dih1ATw76v/Ze29WbjojrH
73Q6naWlpcat1+sNde+d/N7+ubm5cn///v3I7r3LbeovxZMfQokfQokfQokfQokfQokfQjnq2wXa
jry+fv068M+enp4u96mpqXLfs6d+fmxsbDRu379/L69t8/v376GuH2OO+oBm4odQ4odQ4odQ4odQ
4odQ4odQvrp7Fzh58mS537lzp3E7f/58ee3FixfL/fjx4+XeZn19vXFbXFwsr11dXR3q3tQ8+SGU
+CGU+CGU+CGU+CGU+CGU+CGU9/kZqW/fvjVuw57z//nzZ6DPFMD7/EAz8UMo8UMo8UMo8UMo8UMo
8UMo7/P/z5cvX8p93759jduBAwe2+uOMjeqsvu3Xe7ftT548Kfe270FI58kPocQPocQPocQPocQP
ocQPocQPoWLO+W/cuFHu9+7dK/e9e/c2bocOHSqvffz4cbnvZt1ut9yvXbvWuL19+7a8dn5+fpCP
xCZ58kMo8UMo8UMo8UMo8UMo8UOomKO+169fl/va2trAP/vz58/lfuXKlXK/devWwPcetbZXnZ89
e1bu1XHe5GT9z+/o0aPl7pXd4XjyQyjxQyjxQyjxQyjxQyjxQyjxQ6iYc/5Rmp6eLvd/+Ry/zeXL
l8u97euzK7OzsyP72bTz5IdQ4odQ4odQ4odQ4odQ4odQ4odQMef8bV8DPTU1Ve69Xq9xO3HixCAf
aVucPn263B89elTu/X6/3Nt+jXbl5s2bA1/L8Dz5IZT4IZT4IZT4IZT4IZT4IZT4IVTMOf/t27fL
/d27d+VefT/9xsZGeW3bWXqb5eXlcv/582fj9uPHj/LatnP6I0eOlPu5c+cG3vfv319ey2h58kMo
8UMo8UMo8UMo8UMo8UOoibZXNrfYtt7sb6ysrJT70tJS41a97tvpdDofP34s91G+NruwsFDuMzMz
5f7gwYNyn5ub++vPxMht6h+MJz+EEj+EEj+EEj+EEj+EEj+EEj+Ecs6/Sd1ut3Fre212dXW13F+8
eFHuT58+LfdLly41bqdOnSqvPXjwYLmzKznnB5qJH0KJH0KJH0KJH0KJH0KJH0I554fx45wfaCZ+
CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+
CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CCV+CDW5zfeb
2Ob7AQ08+SGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU+CGU
+CGU+CGU+CGU+CGU+CGU+CHUf5Zt+b+OQHReAAAAAElFTkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># looks like a &quot;five&quot;. What&#39;s the corresponding label?</span>
<span class="n">y</span><span class="p">[</span><span class="mi">36000</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt output_prompt">Out[5]:</div>


<div class="output_text output_subarea output_execute_result">
<pre>5.0</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># dataset already split into training (1st 60K) &amp; test (last 10K) images.</span>
<span class="c1"># shuffle training set for cross-validation quality</span>

<span class="n">X_train</span><span class="p">,</span> <span class="n">X_test</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">y_test</span> <span class="o">=</span> <span class="n">X</span><span class="p">[:</span><span class="mi">60000</span><span class="p">],</span> <span class="n">X</span><span class="p">[</span><span class="mi">60000</span><span class="p">:],</span> <span class="n">y</span><span class="p">[:</span><span class="mi">60000</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="mi">60000</span><span class="p">:]</span>

<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>

<span class="n">shuffle_index</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">permutation</span><span class="p">(</span><span class="mi">60000</span><span class="p">)</span>
<span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[</span><span class="n">shuffle_index</span><span class="p">],</span> <span class="n">y_train</span><span class="p">[</span><span class="n">shuffle_index</span><span class="p">]</span>

<span class="nb">print</span><span class="p">(</span><span class="n">X_train</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">X_test</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_train</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_test</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>(60000, 784) (10000, 784) (60000,) (10000,)
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Binary-classifier-training---distinguish-between-2-classes">Binary classifier training - distinguish between 2 classes<a class="anchor-link" href="#Binary-classifier-training---distinguish-between-2-classes">&#182;</a></h3><ul>
<li>Using Stochastic Descent</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Start by only trying to ID &quot;five&quot; digits.</span>

<span class="n">y_train_5</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_train</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span> <span class="c1"># create target vectors</span>
<span class="n">y_test_5</span>  <span class="o">=</span> <span class="p">(</span><span class="n">y_test</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="n">y_train_5</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_train_5</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">y_test_5</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_test_5</span><span class="p">)</span>

<span class="c1"># SGD classifier: good at handling large DBs</span>
<span class="c1">#                 also good at handling one-at-a-time learning</span>

<span class="kn">from</span> <span class="nn">sklearn.linear_model</span> <span class="k">import</span> <span class="n">SGDClassifier</span>
<span class="n">sgd_clf</span> <span class="o">=</span> <span class="n">SGDClassifier</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">sgd_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train_5</span><span class="p">)</span>

<span class="c1"># did it correctly predict the &quot;five&quot; found above?</span>
<span class="nb">print</span><span class="p">(</span><span class="n">sgd_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="n">some_digit</span><span class="p">]))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>(60000,) [False False False ..., False False False]
(10000,) [False False False ..., False False False]
[ True]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Performance-Measures">Performance Measures<a class="anchor-link" href="#Performance-Measures">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[8]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># measure accuracy using K-fold (n=3) cross-validation scores</span>

<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_score</span>

<span class="nb">print</span><span class="p">(</span><span class="n">cross_val_score</span><span class="p">(</span>
        <span class="n">sgd_clf</span><span class="p">,</span> 
        <span class="n">X_train</span><span class="p">,</span> 
        <span class="n">y_train_5</span><span class="p">,</span> 
        <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> 
        <span class="n">scoring</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">))</span>

<span class="c1"># 90% accuracy = pretty easy when 90% of digits aren&#39;t fives to begin with ... :-|</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[ 0.96795  0.96975  0.96855]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># rolling your own cross-validation. Results should be similar-ish to above.</span>

<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">StratifiedKFold</span>
<span class="kn">from</span> <span class="nn">sklearn.base</span> <span class="k">import</span> <span class="n">clone</span>

<span class="n">skfolds</span> <span class="o">=</span> <span class="n">StratifiedKFold</span><span class="p">(</span><span class="n">n_splits</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>

<span class="k">for</span> <span class="n">train_index</span><span class="p">,</span> <span class="n">test_index</span> <span class="ow">in</span> <span class="n">skfolds</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train_5</span><span class="p">):</span>
    
    <span class="n">clone_clf</span> <span class="o">=</span> <span class="n">clone</span><span class="p">(</span><span class="n">sgd_clf</span><span class="p">)</span>
    
    <span class="n">X_train_folds</span> <span class="o">=</span>  <span class="n">X_train</span><span class="p">[</span><span class="n">train_index</span><span class="p">]</span>
    <span class="n">y_train_folds</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_train_5</span><span class="p">[</span><span class="n">train_index</span><span class="p">])</span>
    <span class="n">X_test_fold</span> <span class="o">=</span>    <span class="n">X_train</span><span class="p">[</span><span class="n">test_index</span><span class="p">]</span>
    <span class="n">y_test_fold</span> <span class="o">=</span>   <span class="p">(</span><span class="n">y_train_5</span><span class="p">[</span><span class="n">test_index</span><span class="p">])</span>

    <span class="n">clone_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train_folds</span><span class="p">,</span> <span class="n">y_train_folds</span><span class="p">)</span>
    
    <span class="n">y_pred</span> <span class="o">=</span> <span class="n">clone_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test_fold</span><span class="p">)</span>
    
    <span class="n">n_correct</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">y_pred</span> <span class="o">==</span> <span class="n">y_test_fold</span><span class="p">)</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">n_correct</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">y_pred</span><span class="p">))</span> 
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0.96795
0.96975
0.96855
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[10]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 95% accuracy sounds too good to be true. How about not-fives?</span>

<span class="kn">from</span> <span class="nn">sklearn.base</span> <span class="k">import</span> <span class="n">BaseEstimator</span>

<span class="k">class</span> <span class="nc">Never5Classifier</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
    <span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
        <span class="k">pass</span>

    <span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
        <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">X</span><span class="p">),</span> <span class="mi">1</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">bool</span><span class="p">)</span>

<span class="n">never_5_clf</span> <span class="o">=</span> <span class="n">Never5Classifier</span><span class="p">()</span>

<span class="nb">print</span><span class="p">(</span><span class="n">cross_val_score</span><span class="p">(</span>
    <span class="n">never_5_clf</span><span class="p">,</span>
    <span class="n">X_train</span><span class="p">,</span>
    <span class="n">y_train_5</span><span class="p">,</span>
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
    <span class="n">scoring</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[ 0.9096   0.9124   0.90695]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[11]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># only ~10% of images are &quot;five&quot;, so ~90% of images are &quot;not five&quot;. </span>
<span class="c1"># You SHOULD be right about 90% of the time. :-)</span>

<span class="c1"># Lesson Learned:</span>
<span class="c1"># Accuracy not a good metric for classifiers - esp those with skewed datasets.</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Confusion-Matrix---a-better-way-of-evaluating-a-classifier">Confusion Matrix - a better way of evaluating a classifier<a class="anchor-link" href="#Confusion-Matrix---a-better-way-of-evaluating-a-classifier">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[12]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># general idea: count #times instances of A are classified as B.</span>
<span class="c1"># first, need a set of predictions.</span>

<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">cross_val_predict</span>

<span class="c1"># Generate cross-val&#39;d predictions for each datapoint</span>
<span class="n">y_train_pred</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span><span class="n">sgd_clf</span><span class="p">,</span> <span class="n">X_train</span><span class="p">,</span> <span class="n">y_train_5</span><span class="p">,</span> <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>

<span class="c1"># ROWS = actual classes</span>
<span class="c1"># COLS = predicted classes</span>

<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">confusion_matrix</span>

<span class="nb">print</span><span class="p">(</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[[54044   535]
 [ 1340  4081]]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Classifier-metrics:-precision-=-TP/(TP+FP);-recall-(sensitivity)-=-TP/(TP+FN)">Classifier metrics: precision = TP/(TP+FP); recall (sensitivity) = TP/(TP+FN)<a class="anchor-link" href="#Classifier-metrics:-precision-=-TP/(TP+FP);-recall-(sensitivity)-=-TP/(TP+FN)">&#182;</a></h3><p><img src="precision-recall-50pct.png" alt="alt text" title="Logo Title Text 1"></p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[13]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="mi">3841</span> <span class="o">/</span> <span class="p">(</span><span class="mi">3841</span><span class="o">+</span><span class="mi">1515</span><span class="p">),</span> <span class="mi">3841</span><span class="o">/</span><span class="p">(</span><span class="mi">3841</span><span class="o">+</span><span class="mi">1580</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0.7171396564600448 0.7085408596199964
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[14]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># precision, recall, f1 metrics</span>
<span class="c1"># precision/recall tradeoff: increasing one reduces the other.</span>

<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">precision_score</span><span class="p">,</span> <span class="n">recall_score</span><span class="p">,</span> <span class="n">f1_score</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;precision:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">precision_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;recall:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">recall_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred</span><span class="p">))</span>

<span class="c1"># F1 score favors classifiers with similar precision &amp; recall.</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;f1:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">f1_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>precision:
 0.884098786828
recall:
 0.752813134108
f1:
 0.813191192587
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Precision/Recall-Tradeoffs">Precision/Recall Tradeoffs<a class="anchor-link" href="#Precision/Recall-Tradeoffs">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[15]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Scikit doesn&#39;t let you directly set threshold values (which drive the decision</span>
<span class="c1"># function for precision/recall.) But you can use the decision function itself.</span>

<span class="n">y_scores</span> <span class="o">=</span> <span class="n">sgd_clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">([</span><span class="n">some_digit</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="n">y_scores</span><span class="p">)</span>

<span class="n">threshold</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">y_some_digit_pred</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_scores</span> <span class="o">&gt;</span> <span class="n">threshold</span><span class="p">)</span> 
<span class="nb">print</span><span class="p">(</span><span class="n">y_some_digit_pred</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[ 57844.42736708]
[ True]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[16]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># raising the threshold reduces recall...</span>

<span class="n">threshold</span> <span class="o">=</span> <span class="mi">200000</span>
<span class="n">y_some_digit_pred</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_scores</span> <span class="o">&gt;</span> <span class="n">threshold</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">y_some_digit_pred</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[False]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p><img src="decision-threshold-and-precision-vs-recall.png" alt="tradeoff"></p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[17]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># how to find the right threshold?</span>
<span class="c1"># start with getting decision scores instead of predictions.</span>

<span class="n">y_scores</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span>
    <span class="n">sgd_clf</span><span class="p">,</span> 
    <span class="n">X_train</span><span class="p">,</span> 
    <span class="n">y_train_5</span><span class="p">,</span> 
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
    <span class="n">method</span><span class="o">=</span><span class="s2">&quot;decision_function&quot;</span><span class="p">)</span>

<span class="c1"># use results to build a precision/recall curve</span>

<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">precision_recall_curve</span>
<span class="n">precisions</span><span class="p">,</span> <span class="n">recalls</span><span class="p">,</span> <span class="n">thresholds</span> <span class="o">=</span> <span class="n">precision_recall_curve</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">)</span>

<span class="c1"># plot the result</span>

<span class="k">def</span> <span class="nf">plot_precision_recall_vs_threshold</span><span class="p">(</span><span class="n">precisions</span><span class="p">,</span> <span class="n">recalls</span><span class="p">,</span> <span class="n">thresholds</span><span class="p">):</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">thresholds</span><span class="p">,</span> 
             <span class="n">precisions</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> 
             <span class="s2">&quot;b--&quot;</span><span class="p">,</span> 
             <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Precision&quot;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">thresholds</span><span class="p">,</span> 
             <span class="n">recalls</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> 
             <span class="s2">&quot;g-&quot;</span><span class="p">,</span> 
             <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Recall&quot;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;Threshold&quot;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;upper left&quot;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>

<span class="n">plot_precision_recall_vs_threshold</span><span class="p">(</span><span class="n">precisions</span><span class="p">,</span> <span class="n">recalls</span><span class="p">,</span> <span class="n">thresholds</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[18]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># plot precision vs recall to look for knee of the curve</span>

<span class="k">def</span> <span class="nf">plot_precision_vs_recall</span><span class="p">(</span><span class="n">precisions</span><span class="p">,</span> <span class="n">recalls</span><span class="p">):</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">recalls</span><span class="p">,</span> <span class="n">precisions</span><span class="p">,</span> <span class="s2">&quot;b-&quot;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;Recall&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">16</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;Precision&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">16</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>

<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
<span class="n">plot_precision_vs_recall</span><span class="p">(</span><span class="n">precisions</span><span class="p">,</span> <span class="n">recalls</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[19]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># assume you&#39;re targeting 90% precision:</span>
<span class="c1"># guesswork from precision-recall curve suggests setting threshold ~50000</span>

<span class="n">y_train_pred_90</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_scores</span> <span class="o">&gt;</span> <span class="mi">50000</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">y_train_pred_90</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_train_pred_90</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;precision:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">precision_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred_90</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;recall:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">recall_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred_90</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>(60000,) [False False False ..., False False False]
precision:
 0.924948770492
recall:
 0.666113263236
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="ROC-(Receiver-Operating-Characteristic)-curve">ROC (Receiver Operating Characteristic) curve<a class="anchor-link" href="#ROC-(Receiver-Operating-Characteristic)-curve">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[20]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># ROC plots TRUE POSITIVE rate (TP = recall) vs FALSE POSITIVE rate. (FP = 1-specificity)</span>

<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">roc_curve</span>
<span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="n">thresholds</span> <span class="o">=</span> <span class="n">roc_curve</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">plot_roc_curve</span><span class="p">(</span><span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;k--&#39;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;False Positive Rate&#39;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;True Positive Rate&#39;</span><span class="p">)</span>

<span class="n">plot_roc_curve</span><span class="p">(</span><span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># tradeoff: higher recall (TP) =&gt; more false positives produced.</span>
<span class="c1"># dotted line = purely random classifier results.</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
T2XlypU899xzVK9e3emwjDEmqMgco4jA0exDhw5x3nnnsWzZMq644grGjh1LnTp1nA7LGGMKFZEt
ikiS95xKlSpV6NixI++88w4zZ860JGGMiRgRmSgipT2xaNEizjjjDLZs2YKIMGXKFAYMGOB0WMYY
UySRmSjKeKZIS0vjzjvvpGfPnuzfv5+9e/c6HZIxxhRbZCaKMtym+OSTT2jXrh1jxozh9ttvZ9Wq
VXTt2tXpsIwxptgicjC7LHv11VdJSEjg66+/5qyzznI6HGOM+cMiMlGUta6nWbNm0apVK9q2bcu4
ceNISEggISHB6bCMMaZERGjXU9mwe/duBg4cyIABA3j++ecB/91NliSMMdEkIhOF05lCVXn11Vdp
06YNH3zwAU888QTjx493NihjjAmTiOx6ctro0aO566676NGjB5MnT6ZVq1ZOh2SMMWETkYnCibue
fD4fe/bsoW7dutx4440kJSVx880343JFZqPMGGNCFZFnudIezF67di09e/bk/PPPJycnh+TkZIYN
G2ZJwhhTLtiZLojc3Fwef/xxOnbsyM8//8z9999PbGys02EZY0ypitCup/Dbtm0bl19+OT/99BNX
XXUVL730ErVrR+883cYYczKRmShKoe+pVq1aVK5cmXfffZfLL7887PszxpiyKiK7nsKVJ77++msu
uugi0tPTSUxM5Msvv7QkYYwp9yIyUZS0o0ePctttt3H22Wezbt06tm3b5nRIxhhTZkRkoijJBsVH
H31Eu3btGD9+PH/+859ZuXIlKSkpJbgHY4yJbBE6RlEy2/H5fDz00ENUqlSJRYsWceaZZ5bMho0x
JopEZKL4I20KVWXWrFn07t2bqlWrMnv2bGrVqkV8fHwJxmeMMdEjIrueimvXrl1cccUVDBw4kNGj
RwPQsGFDSxLGGBNERLYoitr1pKq88sor3HPPPWRnZ/PUU09x9913hyc4Y4yJMhHZoihqx9MDDzzA
0KFD6dChAytWrODee+8lJiYic6QxxpS6iDxbhvLAndfrJT09neTkZIYOHUrTpk0ZPny41Wcyxpgi
ishEUZjVq1czdOhQ6tevz8yZMznllFM45ZRTnA7LGGMiUkReXud6fSdcnpOTw7/+9S9OO+00Nm7c
yIABA1DVUo7OGGOiS0S2KOLcv89vq1ev5pprrmHlypUMGjSIl156iZo1azoQnTHGRJeITBSuE4xR
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[21]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># area under curve (AUC) metric:</span>
<span class="c1"># perfect score = ROC AUC = 1.0</span>
<span class="c1"># random score = ROC AUC = 0.5</span>

<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="k">import</span> <span class="n">roc_auc_score</span>
<span class="nb">print</span><span class="p">(</span><span class="n">roc_auc_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0.964880839199
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[22]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># train Random Forest classifier</span>
<span class="c1"># compare its ROC curve &amp; AUC to SGD classifier</span>

<span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span>

<span class="n">forest_clf</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>

<span class="c1"># Random Forest doesn&#39;t have decision_function(); use predict_proba() instead.</span>
<span class="c1"># returns array (row per instance, column per class)</span>

<span class="n">y_probas_forest</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span>
    <span class="n">forest_clf</span><span class="p">,</span> 
    <span class="n">X_train</span><span class="p">,</span> 
    <span class="n">y_train_5</span><span class="p">,</span> 
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
    <span class="n">method</span><span class="o">=</span><span class="s2">&quot;predict_proba&quot;</span><span class="p">)</span>

<span class="c1"># To plot ROC curve, you need scores - not probabilities.</span>
<span class="c1"># use positive class probability as the score.</span>

<span class="n">y_scores_forest</span> <span class="o">=</span> <span class="n">y_probas_forest</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]</span>
<span class="n">fpr_forest</span><span class="p">,</span> <span class="n">tpr_forest</span><span class="p">,</span> <span class="n">thresholds_forest</span> <span class="o">=</span> <span class="n">roc_curve</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span><span class="n">y_scores_forest</span><span class="p">)</span>

<span class="c1"># plot ROC curve</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="s2">&quot;b:&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;SGD&quot;</span><span class="p">)</span>
<span class="n">plot_roc_curve</span><span class="p">(</span><span class="n">fpr_forest</span><span class="p">,</span> <span class="n">tpr_forest</span><span class="p">,</span> <span class="s2">&quot;Random Forest&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;lower right&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
HiZOnEhgYCD//ve/qVq1Knny5CFnzpx069bt+iyPYWFhBAUFERUVRbZs2ejatSsvvviiw9/Gu3np
6LEhVC8R6HQonDx5koEDBzJ79mx69uzJ5MmTnQ5JqTSxe/duKlWq5HQYKpUS+/e7ndFjM3AjTsZl
jGH69OlUqlSJRYsW8dFHHzFu3Dinw1JKKY/wyqYnp40aNYrnn3+eRo0aMXnyZCpUqOB0SEop5TFe
mSic6KKIjY3l1KlTFCtWjO7duxMQEMAzzzyDj49WypRSmZue5dywe/du7r//fh588EEiIyPJmzcv
vXr10iShlMoS9EyXhKioKD788EOCgoL466+/GDJkiM4ToZTKcryy6Sk9HDlyhEcffZQtW7bw5JNP
MnLkSIoWLep0WEople60RnELRYoUITAwkLlz5/L9999rklAqncUNF161alXatGnDhQsX0qTcw4cP
U7Vq1TQpK7533nmH4sWLXx/6/LXXXkvzfcTZsmULixcv9lj5CWmiiGf16tU8/PDDXL16lZw5c7Jy
5UoeffRRp8NSKkuKGy58x44dFChQgDFjxjgdUrIGDx7Mli1b2LJlCx9//LHbn7vV8CO3kt6JQpue
gEuXLvH6668zduxYSpcuzZEjR6hcubLTYSmVIZR+7WePlHv449Zub9ugQQO2bdsG2Ce227Vrx/nz
54mKiuL999+nXbt2HD58mFatWtGoUSPWrl1L8eLFmT9/Pjlz5mTTpk0888wzgB2VNk54eDj9+vUj
JCSEbNmyMWLECJo2bcr06dOZN28eV69eZd++fbz88stERkby9ddfkyNHDhYvXkyBAgXcin358uW8
/PLLREdHc++99zJu3Dhy5MhB6dKl6dixI0uXLuXVV1/l3nvvZcCAAYSGhhIQEMCkSZOoWLEiP/74
I++++y6+vr4EBgaybNky3nrrLcLCwggODub111+nY8eOKTjyKZflaxS//PILVatWZdy4cbzwwgts
375dk4RSGUhMTAzLly+nbdu2APj7+zN37lw2b97MihUreOmll67PNbFv3z4GDBjAzp07yZcvH7Nn
zwbs4IGjRo1i69atN5U9ZswYRITt27fz3Xff0a1bN8LDwwHYsWMHc+bMYePGjbzxxhsEBATw559/
0qBBA7766qtEY/3888+vNz0tWbKE8PBwunfvzvfff8/27duJjo6+6eHcggULsnnzZjp16kTv3r0Z
NWoUmzZtYvjw4fTv3x+AYcOGsWTJErZu3cqCBQvInj07w4YNo2PHjmzZssXjSQKyeI0iNjaWN954
gzx58rBmzRoaNGjgdEhKZTgpufJPS3FjNh0/fpxKlSrx4IMPAnZkhKFDh7Jq1Sp8fHw4fvw4p06d
AqBMmTIEBQUBULt2bQ4fPsyFCxe4cOECjRs3BqBr16788ssvAAQHBzNo0CAAKlasyF133cXevXsB
aNq0KXny5CFPnjwEBgbSxjVGerVq1a7XbhIaPHgwL8cbf33r1q2UKVOG8uXLA9CtWzfGjBnDCy+8
AHD9JH/lyhXWrl3LE088cf2zERERANx33310796dJ598kvbt29/WMU2tLJcojDHMmTOHZs2akT9/
fubPn0+RIkWuz6KllMoY4voorl27RsuWLRkzZgzPPfccM2fOJDQ0lE2bNuHn50fp0qWv1wLi/x77
+voSFhaW6v3HL8vHx+f6so+PD9HR0akuN75cuXIB9qI1X75816dwjW/8+PH88ccf/Pzzz9SuXZtN
mzalyb5TIks1PZ04cYL27dvz+OOPM2rUKABKliypSUKpDCwgIICRI0fy2WefER0dzcWLFylSpAh+
fn6sWLGCI0eOJPn5fPnykS9fPoKDgwGYOXPm9ffuv//+68t79+7l77//TtMheSpUqMDhw4fZv38/
AF9//TUPPPDAP7bLmzcvZcqU4ccffwTsBW1cM9mBAweoV68ew4YNo3Dhwhw9epQ8efJcn5MjPWSJ
RGGMYerUqVSqVIn//ve/fPrpp/+YKUsplXHVrFmT6tWr89133/H0008TEhJCtWrV+Oqrr6hYsWKy
n582bRoDBgwgKCjoprmz+/fvT2xsLNWqVaNjx45Mnz49TS8c/f39mTZtGk888QTVqlXDx8eHvn37
JrrtzJkzmTJlCjVq1KBKlSrMnz8fgFdeeYVq1apRtWpVGjZsSI0aNWjatCm7du0iKCiI77//Ps3i
vRWvHGY8ZGMI1VIwzPiQIUP49NNPady4MZMnT74+EYpSKnE6zLh3S+thxjNtH0VMTAxXr14lb968
9OzZkzJlytC7d28dn0kppVIoUyaKnTt30rNnT4oXL87s2bMpX7789bsOlFJKpUymuryOjIzkvffe
o2bNmuzfv58OHTrgbU1rSmUU+rvjnTzx75ZpahQ7d+7kqaeeYvv27XTq1ImRI0dSuHBhp8NSyiv5
+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
YII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[23]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Random Forest curve looks much steeper (better). How&#39;s the ROC AUC score?</span>
<span class="nb">print</span><span class="p">(</span><span class="n">roc_auc_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_scores_forest</span><span class="p">))</span>

<span class="c1"># How&#39;s the precision &amp; recall?</span>
<span class="n">y_train_pred_forest</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span>
    <span class="n">forest_clf</span><span class="p">,</span> 
    <span class="n">X_train</span><span class="p">,</span> 
    <span class="n">y_train_5</span><span class="p">,</span> 
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="n">precision_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred_forest</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="n">recall_score</span><span class="p">(</span><span class="n">y_train_5</span><span class="p">,</span> <span class="n">y_train_pred_forest</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0.992589481683
0.985567461185
0.831396421324
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Multiclass-Classification">Multiclass Classification<a class="anchor-link" href="#Multiclass-Classification">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[24]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># some algorithms (RF, Bayes, ..) can handle multiple classes</span>
<span class="c1"># others (SVMs, linear, ...) cannot</span>

<span class="c1"># one-vs-all (OVA) strategy for 0-9 digit classication:</span>
<span class="c1"># 10 binary classifiers, one for each digit -- select class with highest score</span>

<span class="c1"># one-vs-one (OVO) strategy:</span>
<span class="c1"># train classifiers for every PAIR of digits -- N*(N-1)/2 classifiers needed!</span>

<span class="c1"># Scikit detects using binary classifier when multi-class problem is present,</span>
<span class="c1"># auto-selects OVA.</span>

<span class="n">sgd_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">sgd_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="n">some_digit</span><span class="p">]))</span> <span class="c1"># can SGD correctly predict the &quot;five&quot;?</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[ 5.]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[25]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># let&#39;s see 10 scores, one per class. </span>
<span class="c1"># highest score corresponds to &quot;five&quot;.</span>

<span class="n">some_digit_scores</span> <span class="o">=</span> <span class="n">sgd_clf</span><span class="o">.</span><span class="n">decision_function</span><span class="p">([</span><span class="n">some_digit</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="n">some_digit_scores</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">sgd_clf</span><span class="o">.</span><span class="n">classes_</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[[-177277.32782496 -561668.18573184 -385895.43788059 -114677.95360751
  -410210.58824666   57844.42736708 -654717.63929413 -200777.6510135
  -772154.70175904 -614737.18986655]]
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[26]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># to force Scikit to use OVO (in this case) or OVA: use corresponding classifier.</span>

<span class="kn">from</span> <span class="nn">sklearn.multiclass</span> <span class="k">import</span> <span class="n">OneVsOneClassifier</span>

<span class="n">ovo_clf</span> <span class="o">=</span> <span class="n">OneVsOneClassifier</span><span class="p">(</span><span class="n">SGDClassifier</span><span class="p">(</span><span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">))</span>
<span class="n">ovo_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;prediction:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">ovo_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="n">some_digit</span><span class="p">]))</span>

<span class="c1"># same thing for Random Forest (RF can directly handle multiple classifications)</span>
<span class="n">forest_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;prediction via Random Forest:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">forest_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="n">some_digit</span><span class="p">]))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;probability via Random Forest:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">forest_clf</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">([</span><span class="n">some_digit</span><span class="p">]))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>prediction:
 [ 5.]
prediction via Random Forest:
 [ 5.]
probability via Random Forest:
 [[ 0.1  0.   0.   0.1  0.   0.8  0.   0.   0.   0. ]]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[27]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># let&#39;s check these classifiers via CV. SGD first.</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;CV score:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">cross_val_score</span><span class="p">(</span>
    <span class="n">sgd_clf</span><span class="p">,</span> 
    <span class="n">X_train</span><span class="p">,</span> 
    <span class="n">y_train</span><span class="p">,</span> 
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> 
    <span class="n">scoring</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>CV score:
 [ 0.84843031  0.85419271  0.81062159]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[28]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># scaling the inputs should help improve the scores.</span>

<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">StandardScaler</span>
<span class="n">scaler</span> <span class="o">=</span> <span class="n">StandardScaler</span><span class="p">()</span>

<span class="n">X_train_scaled</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_train</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">))</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;CV score, scaled inputs:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">cross_val_score</span><span class="p">(</span>
    <span class="n">sgd_clf</span><span class="p">,</span> 
    <span class="n">X_train_scaled</span><span class="p">,</span> 
    <span class="n">y_train</span><span class="p">,</span> 
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> 
    <span class="n">scoring</span><span class="o">=</span><span class="s2">&quot;accuracy&quot;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>CV score, scaled inputs:
 [ 0.91011798  0.91089554  0.90908636]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Error-Analysis">Error Analysis<a class="anchor-link" href="#Error-Analysis">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[29]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># as earlier: a confusion matrix from the SGD classificer</span>

<span class="n">y_train_pred</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span>
    <span class="n">sgd_clf</span><span class="p">,</span> 
    <span class="n">X_train_scaled</span><span class="p">,</span> 
    <span class="n">y_train</span><span class="p">,</span> 
    <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>

<span class="n">conf_mx</span> <span class="o">=</span> <span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_train</span><span class="p">,</span> <span class="n">y_train_pred</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;confusion matrix:</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">conf_mx</span><span class="p">)</span>

<span class="c1"># image equivalent</span>
<span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">conf_mx</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">plt</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">gray</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>confusion matrix:
 [[5735    4   24   11   13   45   43    8   37    3]
 [   1 6489   43   24    6   35    8    8  116   12]
 [  57   38 5329   88   79   27   92   60  174   14]
 [  53   41  140 5333    2  234   35   60  142   91]
 [  17   26   36   10 5371    8   48   30   77  219]
 [  69   38   39  185   76 4600  114   28  175   97]
 [  34   24   42    2   41   95 5625    7   48    0]
 [  22   21   64   31   49    9    8 5792   14  255]
 [  54  157   70  148   14  158   58   28 5029  135]
 [  42   37   25   85  155   36    2  193   75 5299]]
</pre>
</div>
</div>

<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
RK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[30]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># focus on errors.</span>
<span class="c1"># 1st: divide each value in confusion matrix by #images in corresponding class</span>
<span class="c1"># (compares error rates instead of #errors)</span>

<span class="n">row_sums</span> <span class="o">=</span> <span class="n">conf_mx</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">keepdims</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">norm_conf_mx</span> <span class="o">=</span> <span class="n">conf_mx</span> <span class="o">/</span> <span class="n">row_sums</span>

<span class="c1"># fill diagonals with zeroes to keep only the errors, and plot.</span>
<span class="c1"># brighter colors = more misclassifications</span>

<span class="n">np</span><span class="o">.</span><span class="n">fill_diagonal</span><span class="p">(</span><span class="n">norm_conf_mx</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">norm_conf_mx</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">plt</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">gray</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># rows = actual classes</span>
<span class="c1"># cols = predicted classes</span>
<span class="c1"># 8s &amp; 9s are a problem.</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
AAALEgAACxIB0t1+/AAADCFJREFUeJzt3V+InYWZx/HfLzOTmfyRtJhe2CRoxMWqgTV1WLRCBI2w
a0rjxV5YSaG9yc1uY0KhtN5UFO9KbQUpDMlWtKG5SAWXunS70PZib+JOYqA1SXVIs3HslMQ/TUL8
k2Ty7MWcgOu6Oe+R85x3Tp/vB4RkfH14GOc77zln3nmPI0IAalnS9gIABo/wgYIIHyiI8IGCCB8o
iPCBgloL3/bf2/6D7Rnb32lrj6Zsr7P9G9tHbL9q+5G2d2rC9ojtV2z/ou1dmrD9Gdv7bR+zfdT2
XW3v1I3tXZ2vid/b/pntibZ36qaV8G2PSHpG0j9IulXSV23f2sYuPbgk6VsRcaukOyX90xDsLEmP
SDra9hI9+JGkX0bEFyT9rRb57rbXSNohaTIiNkgakfRQu1t119YZ/+8kzUTE8Yi4IGmfpK0t7dJI
RMxFxKHOn89p4QtyTbtbXZ3ttZK2SNrd9i5N2F4laZOkPZIUERci4i/tbtXIqKRltkclLZf0p5b3
6aqt8NdIeuMjf5/VIo/oo2zfIGmjpAPtbtLVDyV9W9LlthdpaL2k05J+0nl6stv2iraXupqIeFPS
9yWdlDQn6UxE/Krdrbrjxb0e2V4p6eeSdkbE2bb3+f/Y/rKkUxFxsO1dejAq6YuSfhwRGyWdl7So
X/+x/VktPFpdL+nzklbY3tbuVt21Ff6bktZ95O9rOx9b1GyPaSH6vRHxQtv7dHG3pK/YPqGFp1L3
2v5puyt1NStpNiKuPJLar4VvBIvZZkl/jIjTEXFR0guSvtTyTl21Ff5/Sfob2+ttL9XCiyH/2tIu
jdi2Fp57Ho2IH7S9TzcR8d2IWBsRN2jh8/vriFjUZ6KI+LOkN2zf3PnQfZKOtLhSEycl3Wl7eedr
5D4t8hckpYWHVgMXEZds/7Okf9fCq6D/EhGvtrFLD+6W9DVJv7N9uPOxRyPi31rc6a/RNyXt7ZwQ
jkv6Rsv7XFVEHLC9X9IhLfzk5xVJU+1u1Z35tVygHl7cAwoifKAgwgcKInygIMIHCmo9fNvb296h
F8O2r8TOgzBs+7YevqSh+oRp+PaV2HkQhmrfxRA+gAFLuYDH9tBdFTQ2NtbouMuXL2vJkubfL+fn
5z/tSn0TEVq4mrSZ8fHxtD2amp+f18jISOPjP/zww0+zUldLly5tdFyv+0p5O0dE1//ZrVyy+2mN
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
RU5ErkJggg==
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[31]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># more on analyzing individual errors</span>

<span class="c1"># EXTRA</span>
<span class="k">def</span> <span class="nf">plot_digits</span><span class="p">(</span><span class="n">instances</span><span class="p">,</span> <span class="n">images_per_row</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span><span class="p">):</span>
    <span class="n">size</span> <span class="o">=</span> <span class="mi">28</span>
    <span class="n">images_per_row</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">instances</span><span class="p">),</span> <span class="n">images_per_row</span><span class="p">)</span>
    <span class="n">images</span> <span class="o">=</span> <span class="p">[</span><span class="n">instance</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">size</span><span class="p">,</span><span class="n">size</span><span class="p">)</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">instances</span><span class="p">]</span>
    <span class="n">n_rows</span> <span class="o">=</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">instances</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="n">images_per_row</span> <span class="o">+</span> <span class="mi">1</span>
    <span class="n">row_images</span> <span class="o">=</span> <span class="p">[]</span>
    <span class="n">n_empty</span> <span class="o">=</span> <span class="n">n_rows</span> <span class="o">*</span> <span class="n">images_per_row</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">instances</span><span class="p">)</span>
    <span class="n">images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span> <span class="o">*</span> <span class="n">n_empty</span><span class="p">)))</span>
    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_rows</span><span class="p">):</span>
        <span class="n">rimages</span> <span class="o">=</span> <span class="n">images</span><span class="p">[</span><span class="n">row</span> <span class="o">*</span> <span class="n">images_per_row</span> <span class="p">:</span> <span class="p">(</span><span class="n">row</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">images_per_row</span><span class="p">]</span>
        <span class="n">row_images</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">rimages</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
    <span class="n">image</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">row_images</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">binary</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>

<span class="n">cl_a</span><span class="p">,</span> <span class="n">cl_b</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span>

<span class="n">X_aa</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[(</span><span class="n">y_train</span> <span class="o">==</span> <span class="n">cl_a</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">y_train_pred</span> <span class="o">==</span> <span class="n">cl_a</span><span class="p">)]</span>
<span class="n">X_ab</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[(</span><span class="n">y_train</span> <span class="o">==</span> <span class="n">cl_a</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">y_train_pred</span> <span class="o">==</span> <span class="n">cl_b</span><span class="p">)]</span>
<span class="n">X_ba</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[(</span><span class="n">y_train</span> <span class="o">==</span> <span class="n">cl_b</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">y_train_pred</span> <span class="o">==</span> <span class="n">cl_a</span><span class="p">)]</span>
<span class="n">X_bb</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[(</span><span class="n">y_train</span> <span class="o">==</span> <span class="n">cl_b</span><span class="p">)</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">y_train_pred</span> <span class="o">==</span> <span class="n">cl_b</span><span class="p">)]</span>

<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">8</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">221</span><span class="p">);</span> <span class="n">plot_digits</span><span class="p">(</span><span class="n">X_aa</span><span class="p">[:</span><span class="mi">25</span><span class="p">],</span> <span class="n">images_per_row</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">222</span><span class="p">);</span> <span class="n">plot_digits</span><span class="p">(</span><span class="n">X_ab</span><span class="p">[:</span><span class="mi">25</span><span class="p">],</span> <span class="n">images_per_row</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">223</span><span class="p">);</span> <span class="n">plot_digits</span><span class="p">(</span><span class="n">X_ba</span><span class="p">[:</span><span class="mi">25</span><span class="p">],</span> <span class="n">images_per_row</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">224</span><span class="p">);</span> <span class="n">plot_digits</span><span class="p">(</span><span class="n">X_bb</span><span class="p">[:</span><span class="mi">25</span><span class="p">],</span> <span class="n">images_per_row</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># shows difficulty in seeing difference between threes and fives.</span>
<span class="c1"># We used SGDclassifier, which is sensitive to image shifts/rotates.</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
f/zxRwqD5caYMWOwePFivY+3d+9e+j3//PNPnd+XeRXaqVMnAEqv5ebNmwMA9VU2JnKVFxISQr2U
s7NRHWdnZwDA/v378dZbb+l6uEKxUp4+fToApRvQv//+S33Es/u9rKysMHToUGpA7+XlRf3IzYE8
X3/66Se8fPkSgBLlKVeuHDp37gxAWTnL8VyqVClMnjzZqDbJMevm5qZxfcsJIQT1lv/111/Rtm1b
o9lXEDh//jz1Qv7jjz/g7u6Onj17AoBG/24hBIYPH44//vgDABAaGooPPvggL4csHOHr0NBQrWGu
3r17U+hoxowZsLa21vr+AQMGaIRqhg0bhpUrV+bX3izs3r0bADQGiKenJ4oUKaL19atWrcLIkSPp
/oQJEzB//nyD26WNpKQkfP311wCAtWvX4unTp/RckSJFNGyW4a7y5ctjz549tG/v6OiIu3fv6n1s
Nzc3ar+pjrW1NapVq5bt++R5mpaWlmVSNWbMGACAn5+f0bcAOnToAAA4cuRItjbm1Ex+586d1GJU
BwqFU5ZERkbi9OnT8Pf3B6BM0KSzdXV1pXMrPT1dY8JWp04dbNu2DQDQsGFDoxqujevXrwMAypQp
gxMnTgBQxs3x48e1/uZlypTB33//jRo1ahjNpp9//hkAsHz5cp0nt+qLlT59+pglhG0JyDB648aN
6Zozbtw4fPLJJxqve/bsGQDg888/x7Zt29CyZUsAyrVetprUEw5fMwzDMExBwuJLot544w107NgR
APDbb7/R440bN842RLRv3z58++23AIBr164BAIVtjJVUoOvqRyanqRfQlyxZ0ijJZ9mxaNEifP/9
93TfwcEBgBKCmz59Otzc3LK856+//sLChQvpvr29fZ6O7enpifT0dAAZK1z5eW3atMn1/YmJidi8
eTOmTp0KAHj58iWWLl0KABg0aBAaNWqUJ7vyQqlSpWjlDChbEOrIco+8RBQKI5UrV4anpyc8PT0B
KCsRGcq2sbFBYmIivfbevXs07sPCwihsbA7q1atHf8vqjRcvXmhEfCpUqED2lihRgratjIW8nslV
crt27QAAVapUoZBsZj766CNcvXoVAHTepjI2V65cQbdu3WisrFixwujHlL/N5MmTaRusQYMGADKS
UO/du4f3338fgJJUV61aNRrfeVwl64zFO+V69epRaPjQoUM4f/48ACVsI0OrAPDo0SN89913ABSn
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
/5oj8GDDTAv3AAAAAElFTkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="MultiLabel-Classification">MultiLabel Classification<a class="anchor-link" href="#MultiLabel-Classification">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[32]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># use case: returning multiple classes for each instance</span>
<span class="c1"># (example: multiple people&#39;s faces in one picture.)</span>

<span class="c1"># create y_multilabel array with 2 target labels for each digit image:</span>
<span class="c1"># first = large digit (7,8,9)?; second = odd (1,3,5,7,9)?</span>


<span class="kn">from</span> <span class="nn">sklearn.neighbors</span> <span class="k">import</span> <span class="n">KNeighborsClassifier</span>

<span class="n">y_train_large</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_train</span> <span class="o">&gt;=</span> <span class="mi">7</span><span class="p">)</span>
<span class="n">y_train_odd</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_train</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;large nums?</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">y_train_large</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;odd nums?</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">y_train_odd</span><span class="p">)</span>

<span class="n">y_multilabel</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">c_</span><span class="p">[</span><span class="n">y_train_large</span><span class="p">,</span> <span class="n">y_train_odd</span><span class="p">]</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;combined (multilabel)?</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">y_multilabel</span><span class="p">)</span>

<span class="c1"># KNeighbors classifier supports multilabeling</span>

<span class="n">knn_clf</span> <span class="o">=</span> <span class="n">KNeighborsClassifier</span><span class="p">()</span>
<span class="n">knn_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_multilabel</span><span class="p">)</span>

<span class="c1"># make example prediction using &quot;some_digit&quot; from above</span>
<span class="c1"># &gt;= 7 = false (correct); odd digit = true (correct)</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;KNN prediction of some_digit: (&gt;=7? odd?)</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">knn_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="n">some_digit</span><span class="p">]))</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>large nums?
 [False False  True ..., False False False]
odd nums?
 [False False  True ..., False False False]
combined (multilabel)?
 [[False False]
 [False False]
 [ True  True]
 ..., 
 [False False]
 [False False]
 [False False]]
KNN prediction of some_digit: (&gt;=7? odd?)
 [[False  True]]
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[33]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># another example: find avg F1 score across all labels</span>

<span class="n">y_train_knn_pred</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span><span class="n">knn_clf</span><span class="p">,</span> <span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">cv</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="n">f1_score</span><span class="p">(</span>
    <span class="n">y_train</span><span class="p">,</span> 
    <span class="n">y_train_knn_pred</span><span class="p">,</span> 
    <span class="n">average</span><span class="o">=</span><span class="s2">&quot;macro&quot;</span><span class="p">))</span> <span class="c1"># use &quot;weighted&quot; if more weight to be given to more common labels.</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0.968186511757
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="MultiOutput-Classification">MultiOutput Classification<a class="anchor-link" href="#MultiOutput-Classification">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[36]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># generalization of multilabel, where each label can have multiple values.</span>
<span class="c1"># example: build image noise removal system</span>

<span class="c1"># start by adding noise to MNIST dataset</span>

<span class="kn">import</span> <span class="nn">numpy.random</span> <span class="k">as</span> <span class="nn">rnd</span>

<span class="n">noise</span> <span class="o">=</span> <span class="n">rnd</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">X_train</span><span class="p">),</span> <span class="mi">784</span><span class="p">))</span>
<span class="n">X_train_mod</span> <span class="o">=</span> <span class="n">X_train</span> <span class="o">+</span> <span class="n">noise</span>
<span class="n">noise</span> <span class="o">=</span> <span class="n">rnd</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">X_test</span><span class="p">),</span> <span class="mi">784</span><span class="p">))</span>
<span class="n">X_test_mod</span> <span class="o">=</span> <span class="n">X_test</span> <span class="o">+</span> <span class="n">noise</span>

<span class="n">y_train_mod</span> <span class="o">=</span> <span class="n">X_train</span>
<span class="n">y_test_mod</span> <span class="o">=</span> <span class="n">X_test</span>

<span class="n">some_index</span> <span class="o">=</span> <span class="mi">5500</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[40]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">plot_digit</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
    <span class="n">image</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">cm</span><span class="o">.</span><span class="n">binary</span><span class="p">,</span>
               <span class="n">interpolation</span><span class="o">=</span><span class="s2">&quot;nearest&quot;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[41]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># train classifier, and clean up the image</span>
<span class="n">knn_clf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train_mod</span><span class="p">,</span> <span class="n">y_train_mod</span><span class="p">)</span>
<span class="n">clean_digit</span> <span class="o">=</span> <span class="n">knn_clf</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="n">X_test_mod</span><span class="p">[</span><span class="n">some_index</span><span class="p">]])</span>

<span class="n">plot_digit</span><span class="p">(</span><span class="n">clean_digit</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
AAALEgAACxIB0t1+/AAABU1JREFUeJzt3a9vFVkYgOF7N8XV4GgIkCBQYAgOi0KQVKAQkJCQYEn6
H+AQBEeCAYdC4lAoRBVcDQhAQiBgKrpikzWbOXT74xZ4n8d+nc4RfXPE6czMt7e3Z0DPX4e9AOBw
iB+ixA9R4oco8UOU+CFK/BAlfogSP0StLPl+/p0QDt58Jz9k54co8UOU+CFK/BAlfogSP0SJH6LE
D1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK
/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+i
xA9R4oco8UOU+CFK/BAlfohaOewFwJ9oa2trOD9y5MiSVjLNzg9R4oco8UOU+CFK/BAlfogSP0Q5
5497//79cL5YLIbzkydPDuenTp2anH3//n147dra2nB+79694Xxzc3Ny9vTp0+G16+vrw/mPHz+G
8+vXrw/nd+7cmZx9+vRpeO1+sfNDlPghSvwQJX6IEj9EiR+ixA9R8+3t7WXeb6k3q5jP54e9hJwl
d/N/7egPws4PUeKHKPFDlPghSvwQJX6IEj9EeZ7/N/Dw4cPDXsKkjY2N4fzcuXMHdu+LFy8O56dP
nz6we/8J7PwQJX6IEj9EiR+ixA9R4oco8UOU5/l/AaP3y89ms9mFCxd2/bt/9p34lRX/6vEH8jw/
ME38ECV+iBI/RIkfosQPUc55luD169fD+V6O8maz2ezx48eTM0d5TLHzQ5T4IUr8ECV+iBI/RIkf
osQPUR7pXYJHjx4N57du3Tqwe//in5LmYHikF5gmfogSP0SJH6LED1HihyjxQ5Rz/iWYz3d07Hog
7t+/P5xfvnx5OD9z5sx+LoflcM4PTBM/RIkfosQPUeKHKPFDlPghyjn/L+DLly/D+fPnz4fza9eu
7frei8ViOL958+ZwfvXq1eF89K6C1dXV4bXsmnN+YJr4IUr8ECV+iBI/RIkfosQPUc75GXry5Mlw
fuPGjeF8fX19cvbs2bPdLImfc84PTBM/RIkfosQPUeKHKPFDlKM+ht68eTOcX7lyZTh/+/bt5Gxz
c3N47fnz54dzJjnqA6aJH6LED1HihyjxQ5T4IUr8EOWcnz35+PHjcH78+PFdX7u2trarNeGcHxgQ
P0SJH6LED1HihyjxQ5T4IWrlsBfA7+3Vq1fD+bFjxyZnzvEPl50fosQPUeKHKPFDlPghSvwQJX6I
cs7P0OfPn4fzu3fvDue3b9/ez+Wwj+z8ECV+iBI/RIkfosQPUeKHKK/uZmg+39FboCct+e+Lf3h1
NzBN/BAlfogSP0SJH6LED1HihyiP9C7B2bNnh/MHDx4M5+/evRvOT5w48X+X9K8XL17s+trZbDZ7
+fLlnq7n8Nj5IUr8ECV+iBI/RIkfosQPUeKHKOf8S7BYLIbzS5cuLWkl/7WxsTGcf/v2bThfXV3d
z+WwRHZ+iBI/RIkfosQPUeKHKPFDlPghyjn/Evzs3fVbW1vD+devX4fzDx8+TM6OHj06vHYv7wLg
92bnhyjxQ5T4IUr8ECV+iBI/RIkfouZL/n66j7XDwZvv5Ifs/BAlfogSP0SJH6LED1HihyjxQ5T4
IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oeoZX+ie0evFAYOnp0fosQP
UeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8
ECV+iPob3byufrwOPwwAAAAASUVORK5CYII=
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[42]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">some_index</span> <span class="o">=</span> <span class="mi">5500</span>

<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">121</span><span class="p">);</span> <span class="n">plot_digit</span><span class="p">(</span><span class="n">X_test_mod</span><span class="p">[</span><span class="n">some_index</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">122</span><span class="p">);</span> <span class="n">plot_digit</span><span class="p">(</span><span class="n">y_test_mod</span><span class="p">[</span><span class="n">some_index</span><span class="p">])</span>
<span class="c1">#save_fig(&quot;noisy_digit_example_plot&quot;)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># left: noisy image; right: cleaned up</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
AAALEgAACxIB0t1+/AAAEjBJREFUeJzt3U1QFdT/x/GvAoLhFXxEEUFEFB9S8zEfG5umacZNZZta
1aZmKmeaNk1lG2uaFk3unHTXwzRNi2pTNkNZapIpPhQooAKBQgiIiaAgiv/t7zffzxkvqff399z3
a/mZ7+VeLrdvdzznfM+oW7duGQDg/jf6f/0CAAB3Bw0dACJBQweASNDQASASNHQAiAQNHQAiQUMH
gEjQ0AEgEjR0AIgEDR0AIpGZyidrb293cwb6+vpk7fnz5102ZcoUWdvf3++yiooKWXvmzBmXjR07
Vtb29vYm/XN7enpcVlJSImv37t3rsqlTp7osOztbPl69hps3b8rajo4Ol+Xn58vaqqoql40erf+f
X15e7rKZM2fK2vb2dpcNDQ0lXTswMCBrV69e7bJEIjFKFt97zNDAvXbbzzbf0AEgEjR0AIgEDR0A
IjEqleNzW1pa3JM1NzfL2lmzZrmss7NT1q5atcplP/zwg6xdvHixy1pbW2VtYWFh0q9B/ftxU1OT
rF24cKHLamtrXVZUVCQfX1dX57KcnBxZq/LLly/LWvVv9qHXoP5tffz48bK2pqbGZdOmTZO1586d
S7q2q6vLZY8++ij/ho5Y8W/oAJAuaOgAEAkaOgBEgoYOAJGgoQNAJFJ9UtRlN27ckLXqlGXodGF1
dbXLQic6r1275rLh4WFZ29DQ4DK1Q8VM7365cuWKrFW7M1asWOGytrY2+Xi162NwcFDWrly50mX7
9++Xtep9SCQSsraxsdFlBQUFsla9NvVZMDN77LHHXKZOu5qZjRkzRuZAuuIbOgBEgoYOAJGgoQNA
JGjoABCJlB797+7udk+mjnqbmanXNW/evKSfKysrS+YHDx50mRodYGZ2+vRpl82ePVvWHjp0yGVq
xKyZXtS8cOGCyyZOnCgf393dLXNFjQAOjblVY4TVmAEzs+LiYpfl5ubKWjX+9vjx47JWjWbIy8tL
+ufm5eVx9B+x4ug/AKQLGjoARIKGDgCRoKEDQCRo6AAQiZTucqmsrHRPtmnTJlmrdn2oi5TN9BH9
0E6OzEw/7SAjI0PWqosgJkyYIGvVbpDQz1VjAkKXQyhq90to983vv//uMrXzxUxfuqwu1TYzKysr
c9mlS5dkrXofQpdWqNc7f/58WatGK5SWlrLLBbFilwsApAsaOgBEgoYOAJGgoQNAJFI6D3369Oku
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
Ppy3wDHB6AAAAABJRU5ErkJggg==
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[&nbsp;]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span> 
</pre></div>

</div>
</div>
</div>

</div>
    </div>
  </div>
</body>
</html>
